package daohibernate;

import hibernate.HibernateUtil;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import entities.Servicio;
import entities.TipoEvento;

public class ServicioDAO {
	private static ServicioDAO instancia = null;
	private static SessionFactory sf = null;	
	
	public static ServicioDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new ServicioDAO();
		} 
		return instancia;
	}
	
	public void altaServicios(List<Servicio> lista){
		Session s = sf.openSession();
		s.beginTransaction();
		for(Servicio elemento:lista){
			s.persist(elemento);
		}
		s.flush();
		s.getTransaction().commit();
	}
	
	public Servicio buscarServicio(int idServicio){
		Session s = sf.openSession();
		@SuppressWarnings("unchecked")
		List<Servicio> servicios = s.createQuery("from Servicio where idServicio = '" + idServicio + "'").list();
		s.close();
		for(Servicio c : servicios){
			return c;
		}
		return null;
	}
	
	
	public void altaServicio(Servicio r){
		Session s = HibernateUtil.getSessionFactory().openSession();
		s.beginTransaction();
		
		System.out.println("Antes de persist Servicio");
		s.persist(r);
		
		s.flush();
		System.out.println("antes de commit");
		s.getTransaction().commit();
		s.close();
		System.out.println("Saliendo del DAO");
	}
	
	public List<Servicio> getServicios(){
		Session s = sf.openSession();
		@SuppressWarnings("unchecked")
		List<Servicio> servicios = s.createQuery("from Servicio").list();
		s.close();
		return servicios;
	}
}
